package com.av.db.layer.interfaces;

import com.av.exceptions.AvException;

/**
 * Interfaz que define la firma de metodos basicos para todos los DAO
 * 
 * @author Victor J Morales R
 * 
 * @param <T>
 *            Entidad que sera manipulada por el DAO
 */
public interface GenericLayer<T> {

	public static final String BEAN_NAME = "";

	/**
	 * Obtiene una entidad por medio del indentificador de la tabla
	 * 
	 * @param id
	 *            Identificador del registro a obtener
	 * @return Un objeto en caso de encontrarlo, nulo en caso contrario
	 */
	T obtener(int id);

	/**
	 * Obtiene todas las entidades registradas en la base de datos
	 * 
	 * @return Un conjunto de entidades, nulo en caso de estar vacio
	 */
	T[] obtener();

	/**
	 * Agrega una entidad a la base de datos
	 * 
	 * @param object
	 *            Entidad a ser agregada a la base de datos
	 * @throws AvException
	 */
	void agregar(T t) throws AvException;

	/**
	 * Actualiza la entidad en la base de datos enviada como parametro
	 * 
	 * @param t
	 *            Entidad a ser actualizada en la base de datos a partir de su
	 *            identificador
	 * @throws AvException
	 */
	void actualizar(T t) throws AvException;

	/**
	 * Elimina una entidad de la base de datos
	 * 
	 * @param t
	 *            Entidad a ser eliminada de la base de datos
	 * @throws AvException
	 */
	void eliminar(T t) throws AvException;
}// GenericLayer